home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Tools 1993 November - Disc 2
/
Power Tools Plus (Disc 2 of 2)(November 1993)(HP).iso
/
hotlines
/
cpethl
/
deccase
/
b04e003t.txt
< prev
next >
Wrap
Text File
|
1992-08-06
|
9KB
|
182 lines
6-25 CASE SHOULD PLAY A KEY ROLE
Newness has a universal appeal. For most software developers, for
instance, the greatest excitement and satisfaction comes from designing
new systems.
It comes as no surprise, then, that the early emphasis in the field of
computer-aided software engineering (CASE) has been on tools for
developing new software.
The first CASE tools to capture public attention in the mid-1980s were
most readily applied to building new applications, since they addressed
front-end analysis and design. However, both the definition and market
for CASE have evolved from this original point to include methods,
procedures and tools that cover the entire software lifecycle,
including the implementation and maintenance phases.
This evolution is critical, for if CASE is to have the transformational
impact many predict, it must meet the needs of the 80 percent of all
software professionals working on existing systems, not just the 20
percent developing new ones.
THE MAINTENANCE MORASS
In many IS shops, the biggest factor contributing to applications
backlogs is not requests for new programs, but the need to maintain
existing ones. Applications written in unstructured COBOL--many of
them 15 to 20 years old--have undergone so many fixes and alterations
that their logic may be nearly impossible for programmers to figure
out.
It is estimated that there are more than 100 billion lines of
production 3GL code, most of it in COBOL. Gartner Group estimates the
average age of applications now in production to be 12 years--which
means they completed their development in the late 1970s and benefited
only from the technology available then.
Few of these applications will ever be rewritten, because companies
can't afford to take them down for the time required to rewrite them.
On the other hand, most companies don't have the personnel to develop a
new program while concurrently maintaining the old one--so the new
development is put off.
Thoughout the corporate world, old systems are continually modified and
revised, making them larger and more complex. Consequently, people,
products and processes become attached to them and an infrastructure is
created that has a vested interest in perpetuating the system.
Eventually, replacing the system becomes a bigger problem than
operating it due to the massive organizational disruption such a change
would cause. So the inertia becomes greater, and still more
modifications are made to the system as it is called upon to do things
never intended when it was originally designed and built.
The only way to break this cycle is to apply CASE or associated
technologies to maintaining existing code. Many experts believe that
software maintenance is part of CASE--that, in fact, CASE will not be
widely accepted for the creation of new systems until it can also
address the existing code maintenance problem.
The problem is not limited to the production environment. In the
technical software development market, maintenance currently eats up 30
to 40 percent of research and development time, slowing time-to-market
for new software technology and adding considerable cost to the
process.
Factors that contribute to the maintenance problem in both the
development and production environments include:
. missing systems-level documentation;
. missing connections between pieces of applications;
. missing or sloppy application and database design;
. obsolete user documentation;
. disorganized libraries and directories; and
. fear of upsetting a temperamental system.
RE-ENGINEERING AS A SOLUTION
Most if not all of these problems can be addressed by software re-
engineering (SRE), the products and strategies focused on leveraging
existing program assets. SRE often is thought of interchangeably with
"maintenance," but the two are not synonymous; indeed, effective
maintenance is the key component of SRE.
The difference between maintenance and re-engineering is one of scope.
Maintenance is functional in nature, and is more time-critical: An
application must be modified immediately because it is "broken."
Re-engineering, on the other hand, means looking at the entire
portfolio of existing applications and how they can be improved.
Usually there is a luxury of time to really think out the purpose of
the applications and the analysis of their relationship to the
organization's overall strategy. SRE requires a much broader
perspective, and it usually is not tactical in nature.
Maintenance programming is difficult--and often unsuccessful--because a
large part of it involves mental reverse-engineering: Maintenance
programmers must find other people's ideas in code.
REVERSE ENGINEERING
Reverse engineering is a specific subset of SRE. It is the process of
extrapolating from code a system's original specification.
Reverse engineering is a complex task that involves the data,
programming logic, system calls and documentation. A developer must
work bottom-up, starting with the existing application and backing up
through progressively higher levels of abstraction--the source code,
the design, the dataflow diagrams, logical data models, entity
relationship models, finally to the business model itself.
In fact, reverse engineering an application could well be a waste of
time if the underlying business model has changed. Under new business
conditions, circumstances and premises, an old program may indeed be
obsolete and not worth reverse engineering.
Given its bottom-up orientation, reverse engineering looks like it
should be done in steps, which implies a lot of pre-processing before
the desired result is obtained. The tools that are available now only
separate the problems from the source code and, at best, fix specific
instances of problems.
There are some tools that provide navigation by structure chart
graphics. However, there are few true abstract program representation
systems, and no one product does it all.
Research continues within the software industry to understand and
eventually achieve automatic reverse engineering. Rule-based systems
employing artificial intelligence techniques offer a path to a
solution. Meanwhile, software vendors offer re-engineering services
based on manual techniques to create the experience base required to
arrive at the rules for an automatic system.
Tools available today provide sophisticated reports that, in effect,
require programmers to become analysts--they have to know what to do
with all the information provided in the reports. This will become
more evident when tools that actually produce the specification become
available--understanding and analyzing the graphical representation
will be key to effectiveness. Training will certainly be essential to
using these products.
REASONS FOR RESISTANCE
Even after full-fledged tools are available, there may be a long
acceptance curve before they are widely used and successful. Until the
methodology is accepted, the tools will not be totally useful. This
means a change in daily habits, which some organizations never achieve.
Reverse engineering tools also are likely to create "culture shock" for
many programmers. As some have had difficulty adjusting to icon-based
code generators, a similar reaction is likely from those who work with
reverse engineering tools--for an experienced programmer, going
directly back to the specification may be the equivalent of "iconic
maintenance."
Another concern is that there may actually be a loss of productivity as
the restructuring and reverse engineering tools destroy the landmarks
in the the code that the maintenance programmer has come to rely on.
It may make the system even more unmaintainable, which in turn may
cause management to hesitate to use such tools.
Another management concern will be cost justification. Cost savings
cannot be measured at the time code is restructured or reversed; it has
to be done over time as the application continues to be maintained.
Therefore, the cost justification process is a slow one.
Overall, methodologies, guidelines, and just plain helpful hints are
missing now for reverse engineering.
For all the potential problems, however, there are clear indications
that the creation and use of sophisticated tools to aide re-engineering
will make for better information systems, and will make life better for
information systems professionals.
Digital Equipment Corp. is committed to providing the most effective
and useful solutions for software re-engineering and reverse
engineering, so its customers can create information systems that
become the strategic resource--well managed, easily maintained--that
business today has come to expect.
###